package com.cleaningcloud.erp.mapper;

import java.util.List;
import java.util.Map;

import com.cleaningcloud.cld.api.domain.CldStaff;
import com.cleaningcloud.erp.api.domain.ErpCommodity;
import com.cleaningcloud.erp.domain.ErpCommodityType;
import com.cleaningcloud.erp.domain.dto.ErpCommodityDto;
import com.cleaningcloud.erp.domain.vo.ErpCommodityVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 商品管理Mapper接口
 * 
 * @author cleaningcloud
 * @date 2024-09-27
 */
public interface ErpCommodityMapper 
{
    /**
     * 查询商品管理
     * 
     * @param commodityId 商品管理主键
     * @return 商品管理
     */
    ErpCommodityVo selectErpCommodityByCommodityId(Long commodityId);

    /**
     * 查询商品管理列表
     * 
     * @param erpCommodity 商品管理
     * @return 商品管理集合
     */
    List<ErpCommodityVo> selectErpCommodityList(ErpCommodityDto erpCommodity);

    /**
     * 新增商品管理
     * 
     * @param erpCommodity 商品管理
     * @return 结果
     */
    int insertErpCommodity(ErpCommodity erpCommodity);

    /**
     * 修改商品管理
     * 
     * @param erpCommodity 商品管理
     * @return 结果
     */
    int updateErpCommodity(ErpCommodity erpCommodity);

    /**
     * 删除商品管理
     * 
     * @param commodityId 商品管理主键
     * @return 结果
     */
    int deleteErpCommodityByCommodityId(Long commodityId);

    /**
     * 批量删除商品管理
     * 
     * @param commodityIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteErpCommodityByCommodityIds(Long[] commodityIds);


    /**
     * 根据供应商商品编码查询商品
     * @return
     */
    @Select("select a.commodity_id from erp_commodity a where commodity_no = #{commodityNo}")
    Long selectCommodityByNo(@Param("commodityNo") String commodityNo);


    /**
     * 校验商品编号是否唯一
     *
     * @param commodityNo 商品编号
     * @return 结果
     */
    @Select("select count(1) from erp_commodity a where commodity_no = #{commodityNo}")
    int checkNoUnique(String commodityNo);

    /**
     * @Author Shaw
     * @Description 供三才环科商城（小程序）展示
     * @date: 2025-04-02 14:31
     * @param: //TODO
     */
    List<ErpCommodityVo> selectMallCommodityList(ErpCommodity erpCommodity);

    /**
     * @Author Shaw
     * @Description 获取商品销售单价,最近一次客户销售价
     * @date: 2025-04-02 14:31
     * @param: //TODO
     */
    ErpCommodityVo getCommoditySalePrice(ErpCommodity erpCommodity);
}
